﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace Graph
{
    class Program
    {
        private static void Main(string[] args)
        {
            #region Edges
            Edge[] edges =
            {
                new Edge("x1", "x2"),
                new Edge("x1", "x3"),
                new Edge("x1", "x3"),
                new Edge("x2", "x3"),
                new Edge("x3", "x4"),
                new Edge("x3", "x8"),
                new Edge("x3", "x9"),
                new Edge("x3", "x7"),
                new Edge("x4", "x5"),
                new Edge("x4", "x8"),
                new Edge("x4", "x7"),
                new Edge("x6", "x7"),
                new Edge("x7", "x9"),
                new Edge("x8", "x9"),
                new Edge("x10", "x11"),
                new Edge("x12", "x11")

            };

            Edge[] edges1 =
            {
                new Edge("x1", "x2"),
                new Edge("x1", "x3"),
                new Edge("x1", "x4"),
                new Edge("x1", "x6"),
                new Edge("x2", "x4"),
                new Edge("x2", "x5"),
                new Edge("x2", "x7"),
                new Edge("x3", "x1"),
                new Edge("x3", "x6"),
                new Edge("x4", "x1"),
                new Edge("x4", "x7"),
                new Edge("x4", "x2"),
                new Edge("x4", "x5"),
                new Edge("x5", "x2"),
                new Edge("x5", "x4"),
                new Edge("x5", "x7"),
                new Edge("x6", "x1"),
                new Edge("x6", "x3"),
                new Edge("x7", "x2"),
                new Edge("x7", "x4"),
                new Edge("x7", "x5")

            };

            Edge[] edges2 =
            {
                new Edge("a", "b"),
                new Edge("b", "a"),
                new Edge("a", "c"),
                new Edge("a", "e"),
                new Edge("b", "d"),
                new Edge("b", "e"),
                new Edge("c", "d"),
                new Edge("c", "e"),
                new Edge("c", "f"),
                new Edge("d", "e"),
                new Edge("e", "f")
            };

            #endregion

            Edge[] edgesA =
            {
                new Edge("x1", "x4"),
                new Edge("x1", "x5"),
                new Edge("x4", "x2"),
                new Edge("x4", "x3"),
                new Edge("x4", "x5"),
                new Edge("x4", "x6"),
                new Edge("x6", "x3"),
                new Edge("x6", "x7"),
                new Edge("x6", "x8"),
                new Edge("x7", "x8"),
       
            };

            Edge[] edgesB =
            {
                new Edge("x1", "x2"),
                new Edge("x1", "x3"),
                new Edge("x1", "x5"),
                new Edge("x1", "x6"),
                new Edge("x2", "x3"),
                new Edge("x2", "x4"),
                new Edge("x3", "x4"),
                new Edge("x4", "x6"),
                new Edge("x4", "x5"),
            };

            Edge[] edgesC =
            {
                new Edge("x1", "x2"),
                new Edge("x1", "x10"),
                new Edge("x2", "x3"),
                new Edge("x2", "x9"),
                new Edge("x2", "x10"),
                new Edge("x3", "x4"),
                new Edge("x3", "x7"),
                new Edge("x3", "x8"),
                new Edge("x3", "x9"),
                new Edge("x4", "x5"),
                new Edge("x4", "x6"),
                new Edge("x4", "x7"),
                new Edge("x5", "x6"),
                new Edge("x6", "x7"),
                new Edge("x7", "x8"),
                new Edge("x8", "x9"),
                new Edge("x9", "x10"),
            };

            Edge[] edgesKruskal =
            {
                new Edge("x1", "x4", 1),
                new Edge("x1", "x5", 5),
                new Edge("x2", "x3", 3),
                new Edge("x2", "x4", 5),
                new Edge("x2", "x5", 4),
                new Edge("x3", "x5", 4),
                new Edge("x4", "x5", 2),
            };

            Edge[] edgesKruskal1 =
            {
                new Edge("x1", "x2", 1),
                new Edge("x1", "x3", 5),
                new Edge("x1", "x4", 3),
                new Edge("x1", "x5", 5),
                new Edge("x2", "x6", 4),
                new Edge("x3", "x7", 4),                
            };

            DateTime begin = DateTime.Now;
            Graph graph = new Graph(edgesKruskal);            
            graph.DisplayKruskalList();

            Console.WriteLine("\nTimpul de executie: " + (DateTime.Now - begin));
        }
    }
}
